# -*- coding: utf-8 -*-
# @Time    : 2021/12/3 9:07
# @Author  : TangDagui
# @Email   : 3297364807@qq.com
# @File    : __init__.py.py
# @Software: PyCharm
import numpy as np


def normalization(data):
    _range = np.max(data) - np.min(data)
    return (data - np.min(data)) / _range


# 标准化
def standardization(data):
    mu = np.mean(data, axis=0)
    sigma = np.std(data, axis=0)
    return (data - mu) / sigma

if __name__ == '__main__':
    # 第一题：创建0-8的三维矩阵
    mOne = np.arange(9).reshape(3, 3)
    print("------第一题-------")
    print(mOne)

    # 第二题:创建一个边缘值为1，内部值为0的10×10的数组B
    mTwo = np.ones((10, 10))
    mTwo[1:-1, 1:-1] = 0
    print("------第二题-------")
    print(mTwo)

    # 第三题:找到数组[1,2,0,0,4,0]中非0元素的位置索引
    mThree = np.nonzero([1, 2, 0, 0, 4, 0])
    print("------第三题-------")
    print(mThree)

    # 第四题：创建一个由1-10之间的随机整数组成的3×3×3的数组C
    mFour = np.random.randint(0, 10, (3, 3, 3))
    print("------第四题-------")
    print(mFour)

    # 第五题：对一个5x5的随机数组做归一化
    np_dat = np.random.randint(1, 100, size=(5, 5))
    print(np_dat)
    nm_dat = (np_dat - np_dat.mean(axis=0)) / (np_dat.std(axis=0))
    print("------第五题-------")
    print(np_dat)
    print(nm_dat)

    # 第六题：将2.产生的数组B写入”6.csv”中
    np.savetxt('6.csv', mTwo, fmt='%d', delimiter=',')
    print("------第六题-------")
    print(np)

    # 第七题：将6.csv文件中的数据读入数组D中，数据类型为整数
    D = np.loadtxt('6.csv', dtype=np.int64, delimiter=',')
    print("------第七题-------")
    print(D)

    # 第八题：对数组D按轴1求和
    b = D.sum(axis=1)
    print("------第八题-------")
    print(b)

    # 第九题：将8.的求和值添加至数组D的最后一列
    print("------第九题-------")
    c = np.insert(D, 10, values=b, axis=0)
    print(c)

    print(normalization(np_dat))
    print()
    print(standardization(np_dat))


